package com.dyrj.base.system.task.controller;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import com.dyrj.vo.PageResultMsg;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;

import com.dyrj.base.system.task.model.SysTask;
import com.dyrj.base.system.task.service.SysTaskService;
import com.dyrj.vo.ResultMsg;
import org.springframework.web.multipart.MultipartFile;

/**
 * @ClassName: TaskController 
 * @Description: (任务管理) 
 * @author cyberdolphin
 * @date 2019年04月01日 20:52:14
 */
@Controller
@RequestMapping("/system/task")
public class SysTaskController {
	@Resource
	private SysTaskService service;

	/**
	 * @Title: index 
	 * @Description: (任务管理首页)
	 * @param @return    设定文件 
	 * @return String    返回类型 
	 * @throws
	 */
	@GetMapping("/index")
	@RequiresPermissions("system:task:index")
	public String index(ModelMap map) {
		return "system/task/task";
	}

	/**
	 * @Title: uploadjar
	 * @Description: (任务上传jar包)
	 * @param @return    设定文件
	 * @return String    返回类型
	 * @throws
	 */
    @ResponseBody
    @RequestMapping("/uploadjar")
    public ResultMsg uploadTest(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request){

        String str_classpath = this.getClass().getResource("/").toString();
        System.out.println("str_classpath:"+str_classpath);
        return service.uploadJarFile(file, request);
    }

	/**
	 * @Title: table 
	 * @Description: (表格数据) 任务列表
	 * @return PageInfo<SysTask>    返回类型
	 */
	@GetMapping("/table")
	@ResponseBody
	@RequiresPermissions("system:task:index")
	public PageResultMsg table(SysTask record) {
		return service.table(record);
	}
	
	/**
	 * @Title: add 
	 * @Description: (新增定时任务)
	 * @param record
	 * @return ResultMsg    返回类型
	 */
	@PostMapping("/")
	@ResponseBody
	@RequiresPermissions("system:task:add")
	public ResultMsg add(SysTask record) {
		return service.add(record);
	}

	/**
	 * @Title: enableJob
	 * @Description: (开启所有DB任务)
	 * @param record
	 * @return ResultMsg    返回类型
	 */
	@PostMapping("/enableAllJob")
	@ResponseBody
	public ResultMsg enableAllJob(SysTask record) {
		return service.enableALLJob(record);
	}
	
	/**
	 * @Title: info 
	 * @Description: (详情)
	 * @param id
	 * @return SysTask    返回类型
	 */
	@GetMapping("/{id}")
	@ResponseBody
	@RequiresPermissions("system:task:info")
	public SysTask info(@PathVariable String id) {
		return service.info(id);
	}
	
	/**
	 * @Title: update 
	 * @Description: (更新定时任务)
	 * @param record
	 * @return ResultMsg    返回类型
	 */
	@PutMapping("/")
	@ResponseBody
	@RequiresPermissions("system:task:edit")
	public ResultMsg update(SysTask record) {
		return service.update(record);
	}
	
	/**
	 * @Title: delete 
	 * @Description: (删除定时任务)
	 * @param id
	 * @return ResultMsg    返回类型
	 */
	@DeleteMapping("/{id}")
	@ResponseBody
	@RequiresPermissions("system:task:delete")
	public ResultMsg delete(@PathVariable String id) {
		return service.delete(id);
	}

//	/**
//	 * @Title: pause
//	 * @Description: (暂停定时任务)
//	 * @param id
//	 * @return ResultMsg    返回类型
//	 */
//    @PostMapping("/pausejob/{id}")
//	@ResponseBody
////	@RequiresPermissions("system:task:pause")
//	public ResultMsg pause(@PathVariable String id) {
//		return service.pause(id);
//	}
//
//	/**
//	 * @Title: resume
//	 * @Description: (重新开始定时任务)
//	 * @param id
//	 * @return ResultMsg    返回类型
//	 */
//    @PostMapping("/resumejob/{id}")
//	@ResponseBody
////	@RequiresPermissions("system:task:resume")
//	public ResultMsg resume(@PathVariable String id) {
//		return service.resume(id);
//	}

}
